/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.agtranscontinental.sisref.ws;

import com.agtranscontinental.sisref.dto.DanioDto;
import com.agtranscontinental.dgs001.dto.OrdenDto;
import com.agtranscontinental.sisref.commons.Archivo;
import com.agtranscontinental.sisref.constantes.Constante;
import com.agtranscontinental.sisref.dto.FotoDto;
import com.agtranscontinental.sisref.dto.RevisionDto;
import com.agtranscontinental.sisref.dto.SerieDto;
import com.agtranscontinental.sisref.sessionremote.ConfiguracionEjbRemote;
import com.agtranscontinental.sisref.sessionremote.DanioEjbRemote;
import com.agtranscontinental.sisref.sessionremote.OrdenEjbRemote;
import com.agtranscontinental.sisref.sessionremote.RevisionEjbRemote;
import com.agtranscontinental.sisref.util.Faces;
import com.sun.faces.el.FacesCompositeELResolver;
import java.util.List;
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.servlet.ServletContext;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;

/**
 *
 * @author ericson
 */
@WebService(serviceName = "RegistroFallaWS")
public class RegistroFallasWS {

    @Resource
    private WebServiceContext wsc;

    @EJB
    private DanioEjbRemote ejbDanio;

    @EJB
    private OrdenEjbRemote ejbOrden;

    @EJB
    private RevisionEjbRemote ejbRevision;

    @EJB
    private ConfiguracionEjbRemote ejbConfiguracion;

    @WebMethod(operationName = "getDanioLst")
    public List<DanioDto> getDanioDtoLst() {
        return ejbDanio.getDanioLst();
    }

    @WebMethod(operationName = "getOrdenDtoLst")
    public OrdenDto getOrdenDto(@WebParam(name = "anio") Integer anio,
            @WebParam(name = "rgmen") String rgmen,
            @WebParam(name = "adna") String adna,
            @WebParam(name = "odn") String odn) {
         return ejbOrden.getOrden(anio, rgmen, adna, odn);
    }

    @WebMethod(operationName = "getSerieDtoLst")
    public List<SerieDto> getSerieDtoLst(@WebParam(name = "id") Integer oden) {
        return ejbOrden.getSerieDtoLst(oden);
    }

    @WebMethod(operationName = "registrarRevision")
    public Integer registrarRevisionDto(@WebParam(name = "revision") RevisionDto revision) {
        RevisionDto rvsn=ejbRevision.persisteRevisionDto(revision);
        if(rvsn!=null && rvsn.getId()!= null){
            return rvsn.getId();
        }else{
           return -1;
        }
         
    }

    @WebMethod(operationName = "registrarFoto")
    public Integer registrarFotoDto( 
    @WebParam(name = "nmbre") String nmbre,
    @WebParam(name = "dccion") String dccion,
     @WebParam(name = "idRvsn") Integer idRvsn,
     @WebParam(name = "binario") byte[] bin) {
        FotoDto foto=new FotoDto(nmbre, dccion, idRvsn);
        String fileSystem = (ejbConfiguracion.getConfiguracion(Constante.CONF_TPO_FLE_SYSTEM)).getDccion();
        FotoDto _foto = ejbRevision.persisteFotoDto(foto);
        if (_foto != null) {
            MessageContext ctxt = wsc.getMessageContext();
            ServletContext req = (ServletContext) ctxt.get(ctxt.SERVLET_CONTEXT);
            String rutaServidor = req.getRealPath(Constante.PATH_IMG_REV) + "/";

            Archivo archivo = new Archivo();
            archivo.guardarArchivo(bin, rutaServidor, foto.getNmbre());
            archivo.copiarArchivo(fileSystem, rutaServidor + foto.getNmbre());
            return _foto.getId();
        }else{
            return -1;
        }

        
    }
}
